import axios, { AxiosResponse } from './axios';

const baseUrl = 'http://localhost:8080';

// 它指的是服务器返回的对象
interface User {
  name: string,
  password: string
}
let user: User = {
  name: 'zf',
  password: '123456'
}
// console.time('cost')
// // 请求拦截器先加的后执行  zf321
// axios.interceptors.request.use((config:AxiosRequestConfig):AxiosRequestConfig=>{
//     config.headers!.name +=1
//     console.timeEnd('cost')
//     return config
// })
// let request = axios.interceptors.request.use((config:AxiosRequestConfig):AxiosRequestConfig=>{
//     config.headers!.name +=2
//     return config
// })
// axios.interceptors.request.use((config:AxiosRequestConfig):AxiosRequestConfig | Promise<AxiosRequestConfig>=> {
//     return new Promise(function(resolve){
//         setTimeout(()=>{
//             config.headers!.name +=3;
//             resolve(config) 
//         },1000)
//     })
//     // return config
//     // return Promise.reject('请求失败')
// })
// axios.interceptors.request.eject(request)//把第二个删掉 弹出
// // 响应拦截器先加的先执行
// let response = axios.interceptors.response.use((response:AxiosResponse):AxiosResponse=> {
//     response.data.name +=1
//     return response
// })
// axios.interceptors.response.use((response:AxiosResponse):AxiosResponse=> {
//     response.data.name +=2
//     return response
// })
// axios.interceptors.response.use((response:AxiosResponse):AxiosResponse=> {
//     response.data.name +=3
//     return response
// })
// axios.interceptors.response.eject(response)
// axios({
//     method:'get',
//     url:baseUrl + '/get',
//     params:user
// }).then((response:AxiosResponse)=>{
//   console.log(response)
//   return response.data
// }).catch(error=>{
//     console.log(error)
// })
// axios({
//   method: 'post',
//   url: baseUrl + '/post',
//   headers: {
//     'content-type': 'application/json',
//     "name": 'zf'
//   },
//   data: user,
//   timeout: 1000,
//   transformRequest: (data: any, headers: any) => {
//     headers['common']['content-type'] = 'application/json';
//     return JSON.stringify(data)
//   },
//   transformResponse: (response: any) => {
//     debugger
//     return response.data
//   },
// }).then((response: AxiosResponse) => {
//   console.log(response)
//   // return response.data
// }).catch((error: any) => {
//   console.log(error)
// })
const CancelToken = axios.cancelToken;
const source = CancelToken.source();
axios({
  method: 'post',
  url: baseUrl + '/post',
  headers: {},
  data: user,
  timeout: 1000,
  // cancelToken: source.token
}).then((response: AxiosResponse) => {
  // console.log(response)
}).catch((error: any) => {
  console.log(error)
})
source.cancel('用户取消请求');